C++ 风格约定 : Parameter Names within Class Declaration
全部标签 我正在用C++编写一个库。所有类和全局函数都在mylibrary命名空间内声明。我需要创建一些仅供内部使用的类:使用这个库的人应该立即注意到哪些类不打算在库外使用。不幸的是,我不能使用私有(private)函数,因为这会弄乱所有封装。我不能使用私有(private)类,因为内部类必须由同一个库中的“普通”类访问。我想这样做的一个好方法是创建命名空间mylibrary::internal并将所有“私有(private)”内容放入其中。这是正确的方法吗?还有其他常见的方法吗? 最佳答案 为您的内部功能使用匿名命名空间。这将确保没有外部代
对于特定的类层次结构,我需要知道基类引用是否是特定派生类的实例。由于不同的原因,我不能在这里使用标准的C++RTTI,我需要实现一个自定义的instanceof机制。LLVM-stleRTTI会满足我的需求,但我想知道是否存在一种方法(以某种方式使用模板)来自动执行classof方法?是否有其他/更简单的实现这种机制可以知道基类是否是派生类的实例?我的约束:我没有多重继承,但我有多个继承级别。对内存占用的影响必须尽可能小,并且不可能执行动态分配。 最佳答案 Iwaswonderingifitwouldexistsaway(someh
我开始将noexcept添加到我的代码中,但我想知道将它添加到内联函数中是否明智。我假设优化器会在明显不需要时省略运行时检查……但是从人/风格的角度来看,是否值得将noexcept添加到诸如getter、设置、增量函数等微不足道的函数中?我认为这是完全明显的东西的视觉困惑。我正在讨论内联函数省略noexcept的规则,但正常的.hpp/.cpp函数如果不抛出则必须拥有它。其次,我有大量代码根本无法抛出,因为它没有分配(在我的国际象棋引擎中),其中不包含STL或任何其他可能失败的代码,因此始终可以保证成功。noexcept不会因为运行时检查而减慢它的速度吗?是否有人使用宏在DEBUG构建
我移交了一些遗留代码,首先我想看看是否有可能改变类似的东西printf("test%d\n",var);进入std::cout其中有很多,手动完成它们非常耗时。有没有办法使用vim来实现这一点?我得到的最远的是:%s/printf(\(.*\),\(.*\));/std::cout但这只会让我着迷std::cout我可以将clang格式应用于代码,因此在printf中我可以保证逗号后始终有一个空格。在此示例中,空格位于逗号和var之间。理想情况下,此vim命令将能够检测百分号以了解其中有多少变量,还可以检测\n以了解何时将其替换为std::endl。请指教。
BOOST_HANA_DEFINE_STRUCT是声明具有内省(introspection)的结构时的绝佳宏。如果我有这样的结构:structPerson{std::stringname;std::stringlast_name;intage;};我们可以像这样重新定义它来添加内省(introspection):structPerson{BOOST_HANA_DEFINE_STRUCT(Person,(std::string,name),(std::string,last_name),(int,age));};但是如果我们有这样的结构呢:structPerson{floateye_di
Paragraph4of[expr.cast](在撰写本文时可用的最新C++标准草案中)描述了C样式转换的行为如下:Theconversionsperformedbyaconst_cast,astatic_cast,astatic_castfollowedbyaconst_cast,areinterpret_cast,orareinterpret_castfollowedbyaconst_cast,canbeperformedusingthecastnotationofexplicittypeconversion.Thesamesemanticrestrictionsan
我需要在头文件和源文件中指定调用约定吗?例如,header.hvoid__cdeclFoo();源.cppvoid__cdeclFoo(){} 最佳答案 没有。来自thedocs:Fornon-staticclassfunctions,ifthefunctionisdefinedout-of-line,thecallingconventionmodifierdoesnothavetobespecifiedontheout-of-linedefinition.Thatis,forclassnon-staticmembermethods
我在一个CUDA项目中有很多类,这些类大部分都得到了美化structs和在组成上相互依赖:classA{public:typedefboost::shared_ptrPtr;A(uintn_elements){...//allocateelement_indices};DeviceVector::iteratorget_element_indices();private:DeviceVectorelement_indices;}classB{public:B(uintn_elements){...//initializemembers};A::Ptrget_a();DevicePoin
背景FreeLingAPI定义了一个不遵守标准Java命名约定的接口(interface)。例如:packagefreeling;publicclasssentenceextendsListWord{publicvoidset_parse_tree(parse_treearg0){接口(interface)是使用SWIG定义的,类似于IDL:classsentence:publicstd::list{public:sentence(void);voidset_parse_tree(constparse_tree&);问题从学术上讲,您如何将接口(interface)映射到传统的Java
我正在使用sublimetext3编写C++代码。我们关注GooglestyleguideforCPP.我正在寻找任何使用样式指南作为引用来提供自动重新缩进和linter支持的插件。 最佳答案 我刚试过https://github.com/timonwong/SublimeAStyleFormatter它似乎工作正常。您必须将用户设置(“SublimeText”>“首选项”>“SublimeAStyleFormatter”>“设置-用户”)编辑为以下内容://Thisisasimplifiedsettingsfilethatonly